/**
 * 全局的类方法工具库，身份证校验、数据处理、转换等
 *   组件内通过 this.$utils 调用，如：this.$utils.testMobile(1)
 *   组件外部需要自行引入工具库
 */
// 生成随机字符串
const chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678'
export function createId (len = 16) {
  let str = ''
  for (let a = 0; a < len; a += 1) {
    str += chars.charAt(Math.floor(Math.random() * chars.length))
  }
  return str
}

// 参数编码
export function encode (str) {
  return window.encodeURIComponent(str)
}

// 参数解码
export function decode (str) {
  return window.decodeURIComponent(str)
}

// 下载文件
export function download (url, params = {}) {
  const form = document.createElement('form')
  form.method = 'post'
  form.action = url
  form.target = '_blank'
  document.body.appendChild(form)
  for (const key in params) {
    const value = params[key]
    if (value) {
      const input = document.createElement('input')
      input.setAttribute('type', 'hidden')
      input.setAttribute('name', key)
      if (isArray(value)) { 
        input.setAttribute('value',  JSON.stringify(value))
      } else {
        input.setAttribute('value', value)
      }
      form.appendChild(input)
    }
  }
  form.submit()
  document.body.removeChild(form)
}


